package Mystack;

import java.util.Stack;

public class test2 {
    //逆波兰表达式（后缀表达式）求值
    public static void main(String[] args) {

    }

    public int evalRPN(String[] tokens){

        Stack<Integer> stack = new Stack<>();
        for (String ch: tokens) {
            //如果是数字就压入栈中
//            if(!ch.equals("+") && !ch.equals("-")
//                    && !ch.equals("*") && !ch.equals("/")){
//                stack.push(Integer.parseInt(ch));
//            }
            if(isOperation(ch)){
                stack.push(Integer.parseInt(ch));
            }
            //运算符就把第一个弹出来的作为右运算符
            //第二个弹出来的作为左运算符
            else{
                Integer right = stack.pop();
                Integer left = stack.pop();
                switch (ch){
                    case "+":
                        stack.push(left+right);
                        break;
                    case "-":
                        stack.push(left-right);
                        break;
                    case "*":
                        stack.push(left*right);
                        break;
                    case "/":
                        stack.push(left/right);
                        break;
                }
            }
        }
        return stack.pop();
    }

    private boolean isOperation(String s){
        if(!s.equals("+") && !s.equals("-")
                && !s.equals("*") && !s.equals("/")){
            return true;
        }
        return false;
    }



}
